package service;

import java.util.ArrayList;

import bean.Direccion;
import bean.OficinaDeVenta;
import bean.VOList;
import bean.vo.OficinaDeVentaVO;

@SuppressWarnings({"unchecked"})
public abstract class ServiciosOficinaDeVenta {
	
	protected static OficinaDeVenta buscarOficinaDeVenta (String nombre) throws Exception {
		OficinaDeVenta odv = (OficinaDeVenta) SistemaCVR.getInstancia().buscarEntidad(new OficinaDeVenta(nombre));
		return odv;
	}
	
	public static OficinaDeVentaVO buscarOficinaDeVenta (OficinaDeVentaVO o) throws Exception {
		OficinaDeVenta odv = ServiciosOficinaDeVenta.buscarOficinaDeVenta(o.getNombre());
		return odv != null ? odv.getVO() : null;
	}
	
	public static ArrayList <OficinaDeVentaVO> getOficinasDeVenta() throws Exception{
		return new VOList<OficinaDeVentaVO>().getVoList(SistemaCVR.getInstancia().getEntidades(OficinaDeVenta.class.getName()));
	}
	
	public static void crearOficinaDeVenta (OficinaDeVentaVO o) throws Exception {
		if (ServiciosOficinaDeVenta.buscarOficinaDeVenta(o.getNombre()) == null) {
			Direccion direccion = ServiciosDireccion.crearDireccion(o.getDireccion());
			OficinaDeVenta odv = new OficinaDeVenta(o.getNombre(), direccion);
			SistemaCVR.getInstancia().agregarEntidad(odv);
		} else {
			throw new Exception("ERROR - Ya existe una ODV con el nombre ingresado.");
		}
	}
	
	public static void eliminarOficinaDeVenta (OficinaDeVentaVO o) throws Exception {
		OficinaDeVenta odv = ServiciosOficinaDeVenta.buscarOficinaDeVenta(o.getNombre());
		if (odv != null ){
			SistemaCVR.getInstancia().eliminarEntidad(odv);
		} else {
			throw new Exception("ERROR - No existe una ODV con el nombre ingresado.");
		}
	}

}
